#include "ai8051u.h" //调用头文件
#include "stc32_stc8_usb.h" 
#include "intrins.h"  //调用头文件
#define u8 unsigned char  //8位无符号变量（0-255）
#define u16 unsigned int  //16位无符号变量（0-65535）

u8 State1 = 0;             //LED1初始状态
u8 State2 = 0;             //LED2初始状态
u8 State3 = 0;             //LED3初始状态

u8 Run_State = 0;         //运行状态

u16 Count_300 = 0;        //计数300ms变量
u16 Count_600 = 0;        //计数600ms变量
u16 Count_900 = 0;        //计数900ms变量

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";



void Timer0_Init(void)        //1毫秒@24.000MHz
{
    TM0PS = 0x00;            //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
    AUXR &= 0x7F;            //定时器时钟12T模式
    TMOD &= 0xF0;            //设置定时器模式
    TL0 = 0x30;                //设置定时初始值
    TH0 = 0xF8;                //设置定时初始值
    TF0 = 0;                //清除TF0标志
    TR0 = 1;                //定时器0开始计时
    ET0 = 1;                //使能定时器0中断
}

void main(void)
{
    int count = 1;                                              //按键计数
    WTST = 0;                                               //设置程序指令延时参数，赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1;                                              //扩展寄存器(XFR)访问使能
    CKCON = 0;                                              //提高访问XRAM速度
     
    P0M1 = 0x00;   P0M0 = 0x00;
    P1M1 = 0x00;   P1M0 = 0x00;
    P2M1 = 0x00;   P2M0 = 0x00;
    P3M1 = 0x00;   P3M0 = 0x00;
    P4M1 = 0x00;   P4M0 = 0x00;
    P5M1 = 0x00;   P5M0 = 0x00;
    P6M1 = 0x00;   P6M0 = 0x00;
    P7M1 = 0x00;   P7M0 = 0x00;
    
    usb_init();    
    
    IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    EA = 1;                                                  
    P40 = 0;                                                 
    while (DeviceState != DEVSTATE_CONFIGURED);              //等待USB完成配置
    
    while(1)                                                 
    {                                                         
        if (bUsbOutReady)                                    //如果接收到了数据
        {                                                    
           // USB_SendData(UsbOutBuffer,OutNumber);           //发送数据缓冲区，长度（接收数据原样返回, 用于测试）
                                                             
            usb_OUT_done();              
        }
        
       if(Count_300 >= 300)                      //300毫秒到达
       {
           Count_300 = 0;  
           State1 = !State1;                     //LED1取反
           P00 = State1;
                      
       }
       
              if(Count_600 >= 600)               //600毫秒到达
       {
           Count_600 = 0;                 
           State2 = !State2;                     //LED2取反
           P01 = State2;
           
       }
       
              if(Count_900 >= 900)               //900毫秒到达
       {
           Count_900 = 0;   
           State3 = !State3;                     //LED3取反
           P02 = State3;
       }
    }
    
}    

void Timer0_Isr(void) interrupt 1        //3秒执行一次
{
    Count_300++;
    Count_600++;
    Count_900++;
    
}





#include "ai8051u.h"
#include "stc32_stc8_usb.h"
#include "intrins.h"

#define u8  unsigned char
#define u16 unsigned int
	
u8 State1=0; 	  //LED1初始状态
u8 State2=0;	  //LED2初始状态
u8 State3=0;	  //LED3初始状态

u8 State[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
//State[0]

u8 Run_State = 0;    //运行状态
u8 num = 0;
//u16 Count_300 = 0;     //计数300ms变量
//u16 Count_600 = 0;     //计数600ms变量
//u16 Count_900 = 0;     //计数900ms变量

u16 Count_ms[3] = {0,0,0};         //3个计时变量
u16 Key_Vol = 0;

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";

void Delay10ms(void)	//@24.000MHz
{
	unsigned long edata i;

	_nop_();
	_nop_();
	_nop_();
	i = 59998UL;
	while (i) i--;
}



void Timer0_Init(void);
void main(void)
{
	int count = 1;
	WTST = 0;  //设置程序指令延时参数，赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度
	
	P0M1 = 0X00;   P0M0 =  0X00;
	P1M1 = 0X00;   P1M0 =  0X00;
	P2M1 = 0X00;   P2M0 =  0X00;
	P3M1 = 0X00;   P3M0 =  0X00;
	P4M1 = 0X00;   P4M0 =  0X00;
	P5M1 = 0X00;   P5M0 =  0X00;
	P6M1 = 0X00;   P6M0 =  0X00;
	P7M1 = 0X00;   P7M0 =  0X00;
	
	usb_init();
	
	IE2 |= 0x80;    
	Timer0_Init	();
    EA = 1;
	
	P40 = 0;
	
	while (DeviceState != DEVSTATE_CONFIGURED); 
	
	while(1)		
	{	
		if (bUsbOutReady)
			
        {
            //USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区，长度（接收数据原样返回, 用于测试）
			
            usb_OUT_done();
        }
//			if(Count_ms[0]>=500)
//		{
//		Count_ms[0] = 0;
//		P0 =~State[num];
//			num++;
//			if(num>7)
//				num=0;
//		}
		P0 =~State[num];
//		if(P32 ==0)
//		{
//		 Delay10ms();
//		}
//		if(P32 ==0)
//		{
//		 while(P32 ==0);
//			num ++;
//		}
		if(Count_ms[1]>=1000)
		{
		Count_ms[1] = 0;
				printf("Ai8051U\r\n");
		}
		if(Count_ms[2]>=10)
		{
		Count_ms[2] = 0;
		if(P32==0)
		{
			Key_Vol ++;
			if(	Key_Vol ==5)
			{
				num ++;
			}
		}		
			else
			{
				Key_Vol=0;
			}
		}
	}
		
//		for(i=0;i<3;i++)	  
//	{
//		Count_ms[i] ++;
//	}
//		if(Count_300>=300) 						//300ms到达
//		{
//		Count_300=0;
//			State1 =!State1;             		//LED1取反
//			P00=State1;
//			


}




void Timer0_Init(void)		//1毫秒@24.000MHz
{
	TM0PS = 0x00;			//设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
	AUXR &= 0x7F;			//定时器时钟12T模式
	TMOD &= 0xF0;			//设置定时器模式
	TL0 = 0x30;				//设置定时初始值
	TH0 = 0xF8;				//设置定时初始值
	TF0 = 0;				//清除TF0标志
	TR0 = 1;		
	ET0 =1;
	//定时器0开始计时
}

 

void Timer0_Isr(void) interrupt 1
{

	for(i=0;i<3;i++)	  
	{
		Count_ms[i] ++;
	
	}
//	Count_300++;
//	Count_600++;
//	Count_900++;
//	state =!state;	
//	 P00 =state;
//	 P01 =!state;
	
}



#include "config.h"
#include "task.h"
#include "io.h"


u8 State[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
//State[0]

u8 Run_State = 0;    //运行状态
u8 num = 0;


u16 Count_ms[3] = {0,0,0};         //3个计时变量


char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";




void main(void)
{
	int count = 1;
	Sys_init();   //函数调用  系统初始化
	
	usb_init();
	
	IE2 |= 0x80;    
	Timer0_Init	();
    EA = 1;
	
	P40 = 0;
	
	while (DeviceState != DEVSTATE_CONFIGURED); 
	
	while(1)		
	{	
		if (bUsbOutReady)
			
        {
            //USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区，长度（接收数据原样返回, 用于测试）
			
            usb_OUT_done();
        }
		Task_Pro_Handler_Callback();
//			if(Count_ms[0]>=500)
//		{
//		Count_ms[0] = 0;
//		P0 =~State[num];
//			num++;
//			if(num>7)
//				num=0;
//		}
//		P0 =~State[num];
//		if(P32 ==0)
//		{
//		 Delay10ms();
//		}
//		if(P32 ==0)
//		{
//		 while(P32 ==0);
//			num ++;
//		}
//		if(Count_ms[1]>=1000)
//		{
//		Count_ms[1] = 0;
//				printf("Ai8051U\r\n");
//		}
//		if(Count_ms[2]>=10)
//		{
//		Count_ms[2] = 0;
//		if(P32==0)
//		{
//			Key_Vol ++;
//			if(	Key_Vol ==5)
//			{
//				num ++;
//			}
//		}		
//			else
//			{
//				Key_Vol=0;
//			}
//		}
	}
		
//		for(i=0;i<3;i++)	  
//	{
//		Count_ms[i] ++;
//	}
//		if(Count_300>=300) 						//300ms到达
//		{
//		Count_300=0;
//			State1 =!State1;             		//LED1取反
//			P00=State1;
//			


}






 

void Timer0_Isr(void) interrupt 1
{

	 Task_Marks_Handler_Callback();
	
	}
//	Count_300++;
//	Count_600++;
//	Count_900++;
//	state =!state;	
//	 P00 =state;
//	 P01 =!state;





